// RAP [rh] quick access disabled
///*******************************************************************************
// * Copyright (c) 2007, 2010 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// ******************************************************************************/
//
//package org.eclipse.ui.internal.quickaccess;
//
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.custom.StyleRange;
//import org.eclipse.swt.graphics.Color;
//import org.eclipse.swt.graphics.Image;
//import org.eclipse.swt.graphics.Rectangle;
//import org.eclipse.swt.graphics.TextLayout;
//import org.eclipse.swt.graphics.TextStyle;
//import org.eclipse.swt.widgets.Event;
//import org.eclipse.swt.widgets.Table;
//import org.eclipse.swt.widgets.TableItem;
//
//import org.eclipse.jface.resource.DeviceResourceException;
//import org.eclipse.jface.resource.ImageDescriptor;
//import org.eclipse.jface.resource.ResourceManager;
//import org.eclipse.jface.viewers.StyledCellLabelProvider;
//import org.eclipse.jface.viewers.StyledString;
//
//import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
//import org.eclipse.ui.internal.WorkbenchImages;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//
//class QuickAccessEntry {
// boolean firstInCategory;
// boolean lastInCategory;
// QuickAccessElement element;
// QuickAccessProvider provider;
// int[][] elementMatchRegions;
// int[][] providerMatchRegions;
//
// QuickAccessEntry(QuickAccessElement element, QuickAccessProvider provider,
// int[][] elementMatchRegions, int[][] providerMatchRegions) {
// this.element = element;
// this.provider = provider;
// this.elementMatchRegions = elementMatchRegions;
// this.providerMatchRegions = providerMatchRegions;
// }
//
// Image getImage(QuickAccessElement element, ResourceManager resourceManager) {
// Image image = findOrCreateImage(element.getImageDescriptor(),
// resourceManager);
// if (image == null) {
// image = WorkbenchImages
// .getImage(IWorkbenchGraphicConstants.IMG_OBJ_ELEMENT);
// }
// return image;
// }
//
// private Image findOrCreateImage(ImageDescriptor imageDescriptor,
// ResourceManager resourceManager) {
// if (imageDescriptor == null) {
// return null;
// }
// Image image = (Image) resourceManager.find(imageDescriptor);
// if (image == null) {
// try {
// image = resourceManager.createImage(imageDescriptor);
// } catch (DeviceResourceException e) {
// WorkbenchPlugin.log(e);
// }
// }
// return image;
// }
//
// public void measure(Event event, TextLayout textLayout,
// ResourceManager resourceManager, TextStyle boldStyle) {
// Table table = ((TableItem) event.item).getParent();
// textLayout.setFont(table.getFont());
// event.width = 0;
// switch (event.index) {
// case 0:
// if (firstInCategory || providerMatchRegions.length > 0) {
// textLayout.setText(provider.getName());
// if (boldStyle != null) {
// for (int i = 0; i < providerMatchRegions.length; i++) {
// int[] matchRegion = providerMatchRegions[i];
// textLayout.setStyle(boldStyle, matchRegion[0],
// matchRegion[1]);
// }
// }
// } else {
// textLayout.setText(""); //$NON-NLS-1$
// }
// break;
// case 1:
// Image image = getImage(element, resourceManager);
// Rectangle imageRect = image.getBounds();
// event.width += imageRect.width + 4;
// event.height = Math.max(event.height, imageRect.height + 2);
// textLayout.setText(element.getLabel());
// if (boldStyle != null) {
// for (int i = 0; i < elementMatchRegions.length; i++) {
// int[] matchRegion = elementMatchRegions[i];
// textLayout.setStyle(boldStyle, matchRegion[0], matchRegion[1]);
// }
// }
// break;
// }
// Rectangle rect = textLayout.getBounds();
// event.width += rect.width + 4;
// event.height = Math.max(event.height, rect.height + 2);
// }
//
// public void paint(Event event, TextLayout textLayout,
// ResourceManager resourceManager, TextStyle boldStyle, Color grayColor) {
// final Table table = ((TableItem) event.item).getParent();
// textLayout.setFont(table.getFont());
// switch (event.index) {
// case 0:
// if (firstInCategory || providerMatchRegions.length > 0) {
// textLayout.setText(provider.getName());
// if (boldStyle != null) {
// for (int i = 0; i < providerMatchRegions.length; i++) {
// int[] matchRegion = providerMatchRegions[i];
// textLayout.setStyle(boldStyle, matchRegion[0],
// matchRegion[1]);
// }
// }
// if (grayColor != null && providerMatchRegions.length > 0 && !firstInCategory) {
// event.gc.setForeground(grayColor);
// }
// Rectangle availableBounds = ((TableItem) event.item).getTextBounds(event.index);
// Rectangle requiredBounds = textLayout.getBounds();
// textLayout.draw(event.gc, availableBounds.x + 1, availableBounds.y
// + (availableBounds.height - requiredBounds.height) / 2);
// }
// break;
// case 1:
// String label = element.getLabel();
// if (element instanceof CommandElement) {
// CommandElement commandElement = (CommandElement) element;
// String binding = commandElement.getBinding();
// if (binding != null) {
// StyledString styledString = StyledCellLabelProvider.styleDecoratedString(label,
// StyledString.QUALIFIER_STYLER, new StyledString(commandElement
// .getCommand()));
// StyleRange[] styleRanges = styledString.getStyleRanges();
// for (int i = 0; i < styleRanges.length; i++) {
// textLayout.setStyle(styleRanges[i], styleRanges[i].start,
// styleRanges[i].start + styleRanges[i].length);
// }
// }
// }
// Image image = getImage(element, resourceManager);
// event.gc.drawImage(image, event.x + 1, event.y + 1);
// textLayout.setText(label);
// if (boldStyle != null) {
// for (int i = 0; i < elementMatchRegions.length; i++) {
// int[] matchRegion = elementMatchRegions[i];
// textLayout.setStyle(boldStyle, matchRegion[0], matchRegion[1]);
// }
// }
// Rectangle availableBounds = ((TableItem) event.item).getTextBounds(event.index);
// Rectangle requiredBounds = textLayout.getBounds();
// textLayout.draw(event.gc, availableBounds.x + 1 + image.getBounds().width, availableBounds.y
// + (availableBounds.height - requiredBounds.height) / 2);
// break;
// }
// if (lastInCategory) {
// if (grayColor != null)
// event.gc.setForeground(grayColor);
// Rectangle bounds = ((TableItem)event.item).getBounds(event.index);
// event.gc.drawLine(Math.max(0, bounds.x - 1), bounds.y + bounds.height - 1, bounds.x + bounds.width, bounds.y
// + bounds.height - 1);
// }
// }
//
// /**
// * @param event
// */
// public void erase(Event event) {
// // We are only custom drawing the foreground.
// event.detail &= ~SWT.FOREGROUND;
// }
//}